from figures import plot_spectrogram
import griffin_lim as gl
from IPython.display import Audio, display, HTML
from librosa import load as load_wav
import matplotlib.pyplot as plt
import numpy as np
import os
def p(s):
display(HTML('<p>%s</p>' % s))
def ms_to_samples(ms, sample_rate):
return int(ms / 1000 * sample_rate)
def report_griffin_lim(name, wav_path):
x, sample_rate = load_wav(wav_path)
S = ms_to_samples(24, sample_rate)
L = 4 * S
window = gl.make_modified_hamming_window(S, L)
stft = gl.get_stft(x, window, S, L, trim=True)
gl.save_spectrogram_to_png(stft, name)
p('Original audio')
display(Audio(x, rate=sample_rate))
p('Original spectrogram')
fig, ax = plt.subplots()
plot_spectrogram(ax, stft)
plt.show()
p('Griffin-Lim reconstruction')
x_gl = gl.lsee_mstftm(np.abs(stft), window, S, L, len(x), trim=True)
display(Audio(x_gl, rate=sample_rate))
p('Griffin-Lim spectrogram')
stft_gl = gl.get_stft(x_gl, window, S, L, trim=True)
fig, ax = plt.subplots()
plot_spectrogram(ax, stft_gl)
plt.show()
report_griffin_lim('guitar-note', 'guitar-note.wav')
Original audio
Original spectrogram
Griffin-Lim reconstruction
100%|████████████████████████████████████████████████████████████████████████████████| 20/20 [00:02<00:00, 7.58it/s]
Griffin-Lim spectrogram
report_griffin_lim('guitar-notes', 'guitar-notes.wav')
Original audio
Original spectrogram
Griffin-Lim reconstruction
100%|████████████████████████████████████████████████████████████████████████████████| 20/20 [00:01<00:00, 10.35it/s]
Griffin-Lim spectrogram
report_griffin_lim('speech', 'speech.wav')
Original audio
Original spectrogram
Griffin-Lim reconstruction
100%|████████████████████████████████████████████████████████████████████████████████| 20/20 [00:15<00:00, 1.27it/s]
Griffin-Lim spectrogram
def report_edited_spectrograms(name, wav_path):
x, sample_rate = load_wav(wav_path)
S = ms_to_samples(24, sample_rate)
L = 4 * S
window = gl.make_modified_hamming_window(S, L)
stft = gl.get_stft(x, window, S, L, trim=True)
gl.save_spectrogram_to_png(stft, name)
p('Original audio')
display(Audio(x, rate=sample_rate))
p('Original spectrogram')
fig, ax = plt.subplots()
plot_spectrogram(ax, stft)
plt.show()
dir_path = os.path.join('spectrograms', name)
for filename in os.listdir(dir_path):
if 'edited' not in filename:
continue
spec = gl.load_spectrogram_from_png(dir_path, filename)
p(f'Edited spectrogram ({filename})')
fig, ax = plt.subplots()
plot_spectrogram(ax, np.exp(spec))
plt.show()
p(f'Griffin-Lim reconstruction ({filename})')
x_gl = gl.lsee_mstftm(np.exp(spec), window, S, L, len(x), trim=True)
display(Audio(x_gl, rate=sample_rate))
# p(f'Griffin-Lim spectrogram ({filename})')
# stft_gl = gl.get_stft(x_gl, window, S, L, trim=True)
# fig, ax = plt.subplots()
# plot_spectrogram(ax, stft_gl)
# plt.show()
report_edited_spectrograms('guitar-note', 'guitar-note.wav')
Original audio
Original spectrogram
Edited spectrogram (spec_edited_more_overtones.png)
Griffin-Lim reconstruction (spec_edited_more_overtones.png)
100%|████████████████████████████████████████████████████████████████████████████████| 20/20 [00:02<00:00, 7.62it/s]
Edited spectrogram (spec_edited_line.png)
Griffin-Lim reconstruction (spec_edited_line.png)
100%|████████████████████████████████████████████████████████████████████████████████| 20/20 [00:02<00:00, 7.05it/s]
report_edited_spectrograms('guitar-notes', 'guitar-notes.wav')
Original audio
Original spectrogram
Edited spectrogram (spec_edited_deleted_overtones.png)
Griffin-Lim reconstruction (spec_edited_deleted_overtones.png)
100%|████████████████████████████████████████████████████████████████████████████████| 20/20 [00:01<00:00, 10.00it/s]
Edited spectrogram (spec_edited_painted.png)
Griffin-Lim reconstruction (spec_edited_painted.png)
100%|████████████████████████████████████████████████████████████████████████████████| 20/20 [00:01<00:00, 10.19it/s]
Edited spectrogram (spec_edited_louder_overtones.png)
Griffin-Lim reconstruction (spec_edited_louder_overtones.png)
100%|████████████████████████████████████████████████████████████████████████████████| 20/20 [00:01<00:00, 10.20it/s]
report_edited_spectrograms('speech', 'speech.wav')
Original audio
Original spectrogram
Edited spectrogram (spec_edited_accentuated_certain_features.png)
Griffin-Lim reconstruction (spec_edited_accentuated_certain_features.png)
100%|████████████████████████████████████████████████████████████████████████████████| 20/20 [00:16<00:00, 1.24it/s]
Edited spectrogram (spec_edited_smiley.png)
Griffin-Lim reconstruction (spec_edited_smiley.png)
100%|████████████████████████████████████████████████████████████████████████████████| 20/20 [00:17<00:00, 1.16it/s]